<?php
/**
 * User: samuelqueniart
 * Date: 25/01/13
 * Time: 17:46
 */

class operationActionClass{

    public static function index($ops){

        /* opération transmise*/
        switch($ops){
            case 'add':
                if(isset($_GET['change'])){
                    operationActionClass::add($_GET["v1"],$_GET["c1"],$_GET['PorteMonnaie'],$_GET['Devise'],$_GET['change']);
                }
                else
                    operationActionClass::add($_GET["v1"],$_GET["c1"],$_GET['PorteMonnaie'],$_GET['Devise'],null);
                break;
            case 'sous':
                if(isset($_GET['change'])){
                    operationActionClass::sous($_GET["v1"],$_GET["c1"],$_GET['PorteMonnaie'],$_GET['Devise'],$_GET['change']);
                }
                else
                    operationActionClass::sous($_GET["v1"],$_GET["c1"],$_GET['PorteMonnaie'],$_GET['Devise'],null);
                break;
            default:
                throw new InvalidOperationException("invalid operation");
        }
    }

    /**
     * @param $value  Valeur que l'utilisateur entre
     * @param $devise Devise que l'utilisateur entre
     * @param $pm     Valeur du porte monnaie
     * @param $d      Devise du porte monnaie
     * @param $change
     */
    private static function add($value,$devise,$pm,$d,$change = null){

        if (isset($value) && isset($devise) && isset($pm) && isset($d)){

            if($change != null){
                $value=$value*$change;
                $devise=$d;
            }
            $m1=MoneyFactory::getDefaultFactory()->createMoney($value,$devise);
            $m2=MoneyFactory::getDefaultFactory()->createMoney($pm,$d);
            $res=MoneyOps::add($m1,$m2);

            if (isset($res) && ($res instanceOf Money)) {
                echo '{"Etat": "ok", "Valeur" :"'.$res->getValue().'"}';
            }
            else{
                echo '{"Etat": "error", "Error" :"add fail"}';
            }
        }

    }


    /**
     * @param $value  Valeur que l'utilisateur entre
     * @param $devise Devise que l'utilisateur entre
     * @param $pm     Valeur du porte monnaie
     * @param $d      Devise du porte monnaie
     * @param $change
     */
    private static function sous($value,$devise,$pm,$d,$change = null){

        if (isset($value) && isset($devise) && isset($pm) && isset($d)){

            if($change != null){
                $value=$value*$change;
                $devise=$d;
            }
            $m1=MoneyFactory::getDefaultFactory()->createMoney($value,$devise);
            $m2=MoneyFactory::getDefaultFactory()->createMoney($pm,$d);
            $res=MoneyOps::sous($m1,$m2);

            if (isset($res) && ($res instanceOf Money)) {
                echo '{"Etat": "ok", "Valeur" :"'.(String)$res->getValue().'"}';
            }
            else{
                echo '{"Etat": "error", "Error" :"sous fail"}';
            }
        }

    }
}